import type {ReactNode} from 'react';
import clsx from 'clsx';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
import HomepageFeatures from '@site/src/components/HomepageFeatures';
import Heading from '@theme/Heading';

import styles from './index.module.css';

function WindowsLink() {
  return (
    <div className={styles.windowsLinkWrapper}>
      <Link
        className={clsx(
          'button button--secondary button--lg',
          styles.windowsLink
        )}
        href="https://microsoft.github.io/react-native-windows"
        target="_blank"
        rel="noopener noreferrer"
      >
        Interested in Windows?
      </Link>
    </div>
  );
}

function HomepageHeader() {
  const {siteConfig} = useDocusaurusContext();
  return (
    <header className={clsx('hero', styles.heroBanner)}>
      <div className={styles.heroContentRow}>
        <div className={styles.heroContentCol}>
          <Heading as="h1" className="hero__title">
            {siteConfig.title}
          </Heading>
          <p className="hero__subtitle">{siteConfig.tagline}</p>
        </div>
        <div className={styles.heroImageCol}>
          <img alt="React Native macOS mockup" src={'img/platform.png'} className={styles.heroImage} />
        </div>
      </div>
      <div className={styles.buttonsWrapper}>
        <div className={styles.buttons}>
          <Link
            className={clsx(
              'button button--primary button--lg',
              styles.headerButton
            )}
            to="/docs/getting-started"
          >
            Get Started
          </Link>
          <Link
            className={clsx(
              'button button--link button--lg',
              styles.headerLink
            )}
            to="/docs/intro"
          >
            Learn the Basics
          </Link>
        </div>
      </div>
    </header>
  );
}

export default function Home(): ReactNode {
  const {siteConfig} = useDocusaurusContext();
  return (
    <Layout
      title={`Hello from ${siteConfig.title}`}
      description="Description will go into a meta tag in <head />">
      <HomepageHeader />
      <main>
        <HomepageFeatures />
        <WindowsLink />
      </main>
    </Layout>
  );
}
